home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
MACD 5
/
MACD 5.bin
/
workbench
/
libs
/
intuisup.lha
/
Intuisup
/
source.lha
/
Editor
/
window.c
< prev
Wrap
C/C++ Source or Header
|
1992-10-05
|
34KB
|
1,163 lines
/* $Revision Header *** Header built automatically - do not edit! ***********
*
* (C) Copyright 1992 by Torsten Jurgeleit
*
* Name .....: window.c
* Created ..: Friday 02-Oct-92 10:25:09
* Revision .: 1
*
* Date Author Comment
* ========= ==================== ====================
* 02-Oct-92 Michael Bjerking New realese, better Screen/Window editor
* 02-Oct-92 Michael Bjerking Created this file!
*
* $Revision Header ********************************************************/
/* Includes */
#include "includes.h"
#include "defines.h"
#include "imports.h"
#include "protos.h"
/* Data for fonts */
STATIC struct TextAttr window_text_attr[]=
{
{
(STRPTR) "topaz.font", 8, FS_NORMAL, FPF_ROMFONT
}
};
/* Defines and data for gadgets */
#define WINDOW_GADGET_TOPEDGE 0
#define WINDOW_GADGET_LEFTEDGE 1
#define WINDOW_GADGET_WIDTH 2
#define WINDOW_GADGET_HEIGHT 3
#define WINDOW_GADGET_DETAILPEN 4
#define WINDOW_GADGET_BLOCKPEN 5
#define WINDOW_GADGET_IDCMPFLAGS 6
#define WINDOW_GADGET_FLAGS 7
#define WINDOW_GADGET_TITLE 8
#define WINDOW_GADGET_MINWIDTH 9
#define WINDOW_GADGET_MINHEIGHT 10
#define WINDOW_GADGET_MAXWIDTH 11
#define WINDOW_GADGET_MAXHEIGHT 12
#define WINDOW_GADGET_OK 13
#define WINDOW_GADGET_CANCEL 14
IMPORT struct List window_gadget7_list;
STATIC struct Node window_gadget7_node[]=
{
{
&window_gadget7_node[1], (struct Node *) & window_gadget7_list.lh_Head, 0, 0,
" GADGETDOWN"
},
{
&window_gadget7_node[2], &window_gadget7_node[0], 0, 0,
" GADGETUP"
},
{
&window_gadget7_node[3], &window_gadget7_node[1], 0, 0,
" CLOSEWINDOW"
},
{
&window_gadget7_node[4], &window_gadget7_node[2], 0, 0,
" REQSET"
},
{
&window_gadget7_node[5], &window_gadget7_node[3], 0, 0,
" REQCLEAR"
},
{
&window_gadget7_node[6], &window_gadget7_node[4], 0, 0,
" REQVERIFY"
},
{
&window_gadget7_node[7], &window_gadget7_node[5], 0, 0,
" MENUPICK"
},
{
&window_gadget7_node[8], &window_gadget7_node[6], 0, 0,
" MENUVERIFY"
},
{
&window_gadget7_node[9], &window_gadget7_node[7], 0, 0,
" MOUSEBUTTONS"
},
{
&window_gadget7_node[10], &window_gadget7_node[8], 0, 0,
" MOUSEMOVE"
},
{
&window_gadget7_node[11], &window_gadget7_node[9], 0, 0,
" DELTAMOVE"
},
{
&window_gadget7_node[12], &window_gadget7_node[10], 0, 0,
" NEWSIZE"
},
{
&window_gadget7_node[13], &window_gadget7_node[11], 0, 0,
" SIZEVERIFY"
},
{
&window_gadget7_node[14], &window_gadget7_node[12], 0, 0,
" REFRESHWINDOW"
},
{
&window_gadget7_node[15], &window_gadget7_node[13], 0, 0,
" ACTIVEWINDOW"
},
{
&window_gadget7_node[16], &window_gadget7_node[14], 0, 0,
" INACTIVEWINDOW"
},
{
&window_gadget7_node[17], &window_gadget7_node[15], 0, 0,
" RAWKEY"
},
{
&window_gadget7_node[18], &window_gadget7_node[16], 0, 0,
" VANILLAKEY"
},
{
&window_gadget7_node[19], &window_gadget7_node[17], 0, 0,
" DISKINSERTED"
},
{
&window_gadget7_node[20], &window_gadget7_node[18], 0, 0,
" DISKREMOVED"
},
{
&window_gadget7_node[21], &window_gadget7_node[19], 0, 0,
" NEWPREFS"
},
{
&window_gadget7_node[22], &window_gadget7_node[20], 0, 0,
" INTUITICKS"
},
{
&window_gadget7_node[23], &window_gadget7_node[21], 0, 0,
" WBENCHMESSAGE"
},
{
(struct Node *) & window_gadget7_list.lh_Tail, &window_gadget7_node[22], 0, 0,
" GADGET_IDCMP_ALL"
}
};
/* STATIC */ struct List window_gadget7_list =
{
&window_gadget7_node[0], NULL,
&window_gadget7_node[22], 0, 0
};
IMPORT struct List window_gadget8_list;
STATIC struct Node window_gadget8_node[]=
{
{
&window_gadget8_node[1], (struct Node *) & window_gadget8_list.lh_Head, 0, 0,
" WINDOWCLOSE"
},
{
&window_gadget8_node[2], &window_gadget8_node[0], 0, 0,
" WINDOWDRAG"
},
{
&window_gadget8_node[3], &window_gadget8_node[1], 0, 0,
" WINDOWDEPTH"
},
{
&window_gadget8_node[4], &window_gadget8_node[2], 0, 0,
" WINDOWSIZING"
},
{
&window_gadget8_node[5], &window_gadget8_node[3], 0, 0,
" BACKDROP"
},
{
&window_gadget8_node[6], &window_gadget8_node[4], 0, 0,
" BORDERLESS"
},
{
&window_gadget8_node[7], &window_gadget8_node[5], 0, 0,
" GIMMEZEROZERO"
},
{
&window_gadget8_node[8], &window_gadget8_node[6], 0, 0,
" SUPER_BITMAP"
},
{
&window_gadget8_node[9], &window_gadget8_node[7], 0, 0,
" SIMPLE_REFRESH"
},
{
&window_gadget8_node[10], &window_gadget8_node[8], 0, 0,
"+SMART_REFRESH"
},
{
&window_gadget8_node[11], &window_gadget8_node[9], 0, 0,
" REPORTMOUSE"
},
{
&window_gadget8_node[12], &window_gadget8_node[10], 0, 0,
" NOCAREREFRESH"
},
{
&window_gadget8_node[13], &window_gadget8_node[11], 0, 0,
" RMBTRAP"
},
{
&window_gadget8_node[14], &window_gadget8_node[12], 0, 0,
" ACTIVATE"
},
{
&window_gadget8_node[15], &window_gadget8_node[13], 0, 0,
" FILL_BACKGROUND"
},
{
&window_gadget8_node[16], &window_gadget8_node[14], 0, 0,
" USE_RENDER_COLORS"
},
{
(struct Node *) & window_gadget8_list.lh_Tail, &window_gadget8_node[15], 0, 0,
" AVAIL_FONTS"
}
};
/* STATIC */ struct List window_gadget8_list =
{
&window_gadget8_node[0], NULL,
&window_gadget8_node[16], 0, 0
};
STATIC struct GadgetData window_gadget_data[]=
{
{
5, 80, 90, 26 - 10, 61, 14,
"_TopEdge ", &window_text_attr[0],
{10, 0, (VOID *) 123}
},
{
5, 80, 90, 11 - 10, 61, 14,
"_LeftEdge ", &window_text_attr[0],
{10, 0, (VOID *) 123}
},
{
5, 80, 90, 41 - 10, 61, 14,
"_Width ", &window_text_attr[0],
{10, 0, (VOID *) 123}
},
{
5, 80, 90, 56 - 10, 61, 14,
"_Heigth ", &window_text_attr[0],
{10, 0, (VOID *) 123}
},
{
5, 80, 90, 71 - 10, 61, 14,
"_DetailPen", &window_text_attr[0],
{10, 0, (VOID *) 123}
},
{
5, 80, 90, 86 - 10, 61, 14,
"_BlockPen ", &window_text_attr[0],
{10, 0, (VOID *) 123}
},
{
10, 256, 160, 25 - 10, 150, 43,
"IDCMP Flags", &window_text_attr[0],
{0, 0, &window_gadget7_list}
},
{
10, 256, 320, 25 - 10, 190, 36,
"Window Flags", &window_text_attr[0],
{0, 0, &window_gadget8_list}
},
{
4, 80, 58, 104 - 10, 117, 14,
"T_itle", &window_text_attr[0],
{MAX_PROJECT_NAME_LEN - 1, 0, "String"}
},
{
5, 65, 260, 65 - 10, 61, 14,
"MinWidth ", &window_text_attr[0],
{10, 0, (VOID *) 123}
},
{
5, 65, 260, 80 - 10, 61, 14,
"MinHeight", &window_text_attr[0],
{10, 0, (VOID *) 123}
},
{
5, 65, 420, 65 - 10, 61, 14,
"MaxWidth ", &window_text_attr[0],
{10, 0, (VOID *) 123}
},
{
5, 65, 420, 80 - 10, 61, 14,
"MaxHeight ", &window_text_attr[0],
{10, 0, (VOID *) 123}
},
{
1, 16, 220, 100 - 10, 116, 20,
"_Ok", &window_text_attr[0],
{0, 0, (VOID *) 0}
},
{
1, 16, 347, 100 - 10, 116, 20,
"_Cancel", &window_text_attr[0],
{0, 0, (VOID *) 0}
},
{
INTUISUP_DATA_END
}
};
VOID
change_flags_list(APTR gl, USHORT flags, ULONG IDCMPflags, ULONG WINflags)
{
/* IDCMP Flags */
if (IDCMPflags & GADGETDOWN)
strcpy(window_gadget7_node[0].ln_Name, "*GADGETDOWN");
else
strcpy(window_gadget7_node[0].ln_Name, " GADGETDOWN");
if (IDCMPflags & GADGETUP)
strcpy(window_gadget7_node[1].ln_Name, "*GADGETUP");
else
strcpy(window_gadget7_node[1].ln_Name, " GADGETUP");
if (IDCMPflags & CLOSEWINDOW)
strcpy(window_gadget7_node[2].ln_Name, "*CLOSEWINDOW");
else
strcpy(window_gadget7_node[2].ln_Name, " CLOSEWINDOW");
if (IDCMPflags & REQSET)
strcpy(window_gadget7_node[3].ln_Name, "*REQSET");
else
strcpy(window_gadget7_node[3].ln_Name, " REQSET");
if (IDCMPflags & REQCLEAR)
strcpy(window_gadget7_node[4].ln_Name, "*REQCLEAR");
else
strcpy(window_gadget7_node[4].ln_Name, " REQCLEAR");
if (IDCMPflags & REQVERIFY)
strcpy(window_gadget7_node[5].ln_Name, "*REQVERIFY");
else
strcpy(window_gadget7_node[5].ln_Name, " REQVERIFY");
if (IDCMPflags & MENUPICK)
strcpy(window_gadget7_node[6].ln_Name, "*MENUPICK");
else
strcpy(window_gadget7_node[6].ln_Name, " MENUPICK");
if (IDCMPflags & MENUVERIFY)
strcpy(window_gadget7_node[7].ln_Name, "*MENUVERIFY");
else
strcpy(window_gadget7_node[7].ln_Name, " MENUVERIFY");
if (IDCMPflags & MOUSEBUTTONS)
strcpy(window_gadget7_node[8].ln_Name, "*MOUSEBUTTONS");
else
strcpy(window_gadget7_node[8].ln_Name, " MOUSEBUTTONS");
if (IDCMPflags & MOUSEMOVE)
strcpy(window_gadget7_node[9].ln_Name, "*MOUSEMOVE");
else
strcpy(window_gadget7_node[9].ln_Name, " MOUSEMOVE");
if (IDCMPflags & DELTAMOVE)
strcpy(window_gadget7_node[10].ln_Name, "*DELTAMOVE");
else
strcpy(window_gadget7_node[10].ln_Name, " DELTAMOVE");
if (IDCMPflags & NEWSIZE)
strcpy(window_gadget7_node[11].ln_Name, "*NEWSIZE");
else
strcpy(window_gadget7_node[11].ln_Name, " NEWSIZE");
if (IDCMPflags & SIZEVERIFY)
strcpy(window_gadget7_node[12].ln_Name, "*SIZEVERIFY");
else
strcpy(window_gadget7_node[12].ln_Name, " SIZEVERIFY");
if (IDCMPflags & REFRESHWINDOW)
strcpy(window_gadget7_node[13].ln_Name, "*REFRESHWINDOW");
else
strcpy(window_gadget7_node[13].ln_Name, " REFRESHWINDOW");
if (IDCMPflags & ACTIVEWINDOW)
strcpy(window_gadget7_node[14].ln_Name, "*ACTIVEWINDOW");
else
strcpy(window_gadget7_node[14].ln_Name, " ACTIVEWINDOW");
if (IDCMPflags & INACTIVEWINDOW)
strcpy(window_gadget7_node[15].ln_Name, "*INACTIVEWINDOW");
else
strcpy(window_gadget7_node[15].ln_Name, " INACTIVEWINDOW");
if (IDCMPflags & RAWKEY)
strcpy(window_gadget7_node[16].ln_Name, "*RAWKEY");
else
strcpy(window_gadget7_node[16].ln_Name, " RAWKEY");
if (IDCMPflags & VANILLAKEY)
strcpy(window_gadget7_node[17].ln_Name, "*VANILLAKEY");
else
strcpy(window_gadget7_node[17].ln_Name, " VANILLAKEY");
if (IDCMPflags & DISKINSERTED)
strcpy(window_gadget7_node[18].ln_Name, "*DISKINSERTED");
else
strcpy(window_gadget7_node[18].ln_Name, " DISKINSERTED");
if (IDCMPflags & DISKREMOVED)
strcpy(window_gadget7_node[19].ln_Name, "*DISKREMOVED");
else
strcpy(window_gadget7_node[19].ln_Name, " DISKREMOVED");
if (IDCMPflags & NEWPREFS)
strcpy(window_gadget7_node[20].ln_Name, "*NEWPREFS");
else
strcpy(window_gadget7_node[20].ln_Name, " NEWPREFS");
if (IDCMPflags & INTUITICKS)
strcpy(window_gadget7_node[21].ln_Name, "*INTUITICKS");
else
strcpy(window_gadget7_node[21].ln_Name, " INTUITICKS");
if (IDCMPflags & WBENCHMESSAGE)
strcpy(window_gadget7_node[22].ln_Name, "*WBENCHMESSAGE");
else
strcpy(window_gadget7_node[22].ln_Name, " WBENCHMESSAGE");
if ((IDCMPflags & GADGET_IDCMP_FLAGS_ALL) == GADGET_IDCMP_FLAGS_ALL)
strcpy(window_gadget7_node[23].ln_Name, "*GADGET_IDCMP_ALL");
else
strcpy(window_gadget7_node[23].ln_Name, " GADGET_IDCMP_ALL");
/* WINDOW Flags */
if (WINflags & WINDOWCLOSE)
strcpy(window_gadget8_node[0].ln_Name, "*WINDOWCLOSE");
else
strcpy(window_gadget8_node[0].ln_Name, " WINDOWCLOSE");
if (WINflags & WINDOWDRAG)
strcpy(window_gadget8_node[1].ln_Name, "*WINDOWDRAG");
else
strcpy(window_gadget8_node[1].ln_Name, " WINDOWDRAG");
if (WINflags & WINDOWDEPTH)
strcpy(window_gadget8_node[2].ln_Name, "*WINDOWDEPTH");
else
strcpy(window_gadget8_node[2].ln_Name, " WINDOWDEPTH");
if (WINflags & WINDOWSIZING)
{
strcpy(window_gadget8_node[3].ln_Name, "*WINDOWSIZING");
ISetGadgetAttributes(gl,
WINDOW_GADGET_MINWIDTH,
GADGET_DATA_FLAG_DISABLED, 0L,
USE_CURRENT_VALUE, USE_CURRENT_VALUE, (VOID *) USE_CURRENT_VALUE);
ISetGadgetAttributes(gl,
WINDOW_GADGET_MAXWIDTH,
GADGET_DATA_FLAG_DISABLED, 0L,
USE_CURRENT_VALUE, USE_CURRENT_VALUE, (VOID *) USE_CURRENT_VALUE);
ISetGadgetAttributes(gl,
WINDOW_GADGET_MINHEIGHT,
GADGET_DATA_FLAG_DISABLED, 0L,
USE_CURRENT_VALUE, USE_CURRENT_VALUE, (VOID *) USE_CURRENT_VALUE);
ISetGadgetAttributes(gl,
WINDOW_GADGET_MAXHEIGHT,
GADGET_DATA_FLAG_DISABLED, 0L,
USE_CURRENT_VALUE, USE_CURRENT_VALUE, (VOID *) USE_CURRENT_VALUE);
}
else
{
strcpy(window_gadget8_node[3].ln_Name, " WINDOWSIZING");
ISetGadgetAttributes(gl,
WINDOW_GADGET_MINWIDTH,
GADGET_DATA_FLAG_DISABLED, GADGET_DATA_FLAG_DISABLED,
USE_CURRENT_VALUE, USE_CURRENT_VALUE, (VOID *) 0);
ISetGadgetAttributes(gl,
WINDOW_GADGET_MAXWIDTH,
GADGET_DATA_FLAG_DISABLED, GADGET_DATA_FLAG_DISABLED,
USE_CURRENT_VALUE, USE_CURRENT_VALUE, (VOID *) 0);
ISetGadgetAttributes(gl,
WINDOW_GADGET_MINHEIGHT,
GADGET_DATA_FLAG_DISABLED, GADGET_DATA_FLAG_DISABLED,
USE_CURRENT_VALUE, USE_CURRENT_VALUE, (VOID *) 0);
ISetGadgetAttributes(gl,
WINDOW_GADGET_MAXHEIGHT,
GADGET_DATA_FLAG_DISABLED, GADGET_DATA_FLAG_DISABLED,
USE_CURRENT_VALUE, USE_CURRENT_VALUE, (VOID *) 0);
}
if (WINflags & BACKDROP)
strcpy(window_gadget8_node[4].ln_Name, "*BACKDROP");
else
strcpy(window_gadget8_node[4].ln_Name, " BACKDROP");
if (WINflags & BORDERLESS)
strcpy(window_gadget8_node[5].ln_Name, "*BORDERLESS");
else
strcpy(window_gadget8_node[5].ln_Name, " BORDERLESS");
if (WINflags & GIMMEZEROZERO)
strcpy(window_gadget8_node[6].ln_Name, "*GIMMEZEROZERO");
else
strcpy(window_gadget8_node[6].ln_Name, " GIMMEZEROZERO");
if (WINflags & SUPER_BITMAP)
strcpy(window_gadget8_node[7].ln_Name, "*SUPER_BITMAP");
else
strcpy(window_gadget8_node[7].ln_Name, " SUPER_BITMAP");
if (WINflags & SIMPLE_REFRESH)
strcpy(window_gadget8_node[8].ln_Name, "*SIMPLE_REFRESH");
else
strcpy(window_gadget8_node[8].ln_Name, " SIMPLE_REFRESH");
/*
if(WINflags & SMART_REFRESH)
strcpy(window_gadget8_node[9].ln_Name,"*SMART_REFRESH");
else
strcpy(window_gadget8_node[9].ln_Name," SMART_REFRESH");
*/
if (flags & TEMPLATE_LIST_FLAG_REPORTMOUSE)
strcpy(window_gadget8_node[10].ln_Name, "*REPORTMOUSE");
else
strcpy(window_gadget8_node[10].ln_Name, " REPORTMOUSE");
if (WINflags & NOCAREREFRESH)
strcpy(window_gadget8_node[11].ln_Name, "*NOCAREREFRESH");
else
strcpy(window_gadget8_node[11].ln_Name, " NOCAREREFRESH");
if (WINflags & RMBTRAP)
strcpy(window_gadget8_node[12].ln_Name, "*RMBTRAP");
else
strcpy(window_gadget8_node[12].ln_Name, " RMBTRAP");
if (WINflags & ACTIVATE)
strcpy(window_gadget8_node[13].ln_Name, "*ACTIVATE");
else
strcpy(window_gadget8_node[13].ln_Name, " ACTIVATE");
if (flags & TEMPLATE_LIST_FLAG_BACK_FILL)
strcpy(window_gadget8_node[14].ln_Name, "*FILL_BACKGROUND");
else
strcpy(window_gadget8_node[14].ln_Name, " FILL_BACKGROUND");
if (flags & TEMPLATE_LIST_FLAG_RENDER_COLORS)
{
strcpy(window_gadget8_node[15].ln_Name, "*USE_RENDER_COLORS");
ISetGadgetAttributes(gl,
WINDOW_GADGET_DETAILPEN,
GADGET_DATA_FLAG_DISABLED, GADGET_DATA_FLAG_DISABLED,
USE_CURRENT_VALUE, USE_CURRENT_VALUE, (VOID *) 0);
ISetGadgetAttributes(gl,
WINDOW_GADGET_BLOCKPEN,
GADGET_DATA_FLAG_DISABLED, GADGET_DATA_FLAG_DISABLED,
USE_CURRENT_VALUE, USE_CURRENT_VALUE, (VOID *) 1);
}
else
{
strcpy(window_gadget8_node[15].ln_Name, " USE_RENDER_COLORS");
ISetGadgetAttributes(gl,
WINDOW_GADGET_DETAILPEN,
GADGET_DATA_FLAG_DISABLED, 0L,
USE_CURRENT_VALUE, USE_CURRENT_VALUE, (VOID *) USE_CURRENT_VALUE);
ISetGadgetAttributes(gl,
WINDOW_GADGET_BLOCKPEN,
GADGET_DATA_FLAG_DISABLED, 0L,
USE_CURRENT_VALUE, USE_CURRENT_VALUE, (VOID *) USE_CURRENT_VALUE);
}
if (flags & TEMPLATE_LIST_FLAG_AVAIL_FONTS)
strcpy(window_gadget8_node[16].ln_Name, "*AVAIL_FONTS");
else
strcpy(window_gadget8_node[16].ln_Name, " AVAIL_FONTS");
}
SHORT
change_project_window(VOID)
{
struct TemplateList *tl = &template_list;
struct GadgetData *gd = &window_gadget_data[0];
APTR gl;
USHORT flags = tl->tl_Flags;
ULONG IDCMPflags = tl->tl_IDCMPFlags, WINflags = pwin->Flags;
SHORT status;
/* Init gadgets with current values */
(gd + WINDOW_GADGET_LEFTEDGE)->gd_SpecialData.gd_InputData.gd_InputDefault = (BYTE *) pwin->LeftEdge;
(gd + WINDOW_GADGET_TOPEDGE)->gd_SpecialData.gd_InputData.gd_InputDefault = (BYTE *) pwin->TopEdge;
(gd + WINDOW_GADGET_WIDTH)->gd_SpecialData.gd_InputData.gd_InputDefault = (BYTE *) pwin->Width;
(gd + WINDOW_GADGET_HEIGHT)->gd_SpecialData.gd_InputData.gd_InputDefault = (BYTE *) pwin->Height;
(gd + WINDOW_GADGET_DETAILPEN)->gd_SpecialData.gd_InputData.gd_InputDefault = (BYTE *) pwin->DetailPen;
(gd + WINDOW_GADGET_BLOCKPEN)->gd_SpecialData.gd_InputData.gd_InputDefault = (BYTE *) pwin->BlockPen;
(gd + WINDOW_GADGET_TITLE)->gd_SpecialData.gd_InputData.gd_InputDefault = (BYTE *) tl->tl_ProjectName;
(gd + WINDOW_GADGET_MINWIDTH)->gd_SpecialData.gd_InputData.gd_InputDefault = (BYTE *) pwin->MinWidth;
(gd + WINDOW_GADGET_MINHEIGHT)->gd_SpecialData.gd_InputData.gd_InputDefault = (BYTE *) pwin->MinHeight;
(gd + WINDOW_GADGET_MAXWIDTH)->gd_SpecialData.gd_InputData.gd_InputDefault = (BYTE *) pwin->MaxWidth;
(gd + WINDOW_GADGET_MAXHEIGHT)->gd_SpecialData.gd_InputData.gd_InputDefault = (BYTE *) pwin->MaxHeight;
/* Print title and display gadgets */
IClearWindow(eri, ewin, 0, 0, EDITOR_WINDOW_WIDTH, EDITOR_WINDOW_HEIGHT, 0);
if (!(gl = ICreateGadgets(eri, &window_gadget_data[0], 0, 0, NULL)))
status = EDITOR_ERROR_OUT_OF_MEM;
else
{
/* Init IDCMPFlag and Flag list */
change_flags_list(gl, flags, IDCMPflags, WINflags);
IDisplayGadgets(ewin, gl);
status = change_project_window_action(gl);
IRemoveGadgets(gl);
IFreeGadgets(gl);
}
return (status);
}
/* Perform action for change project window settings */
STATIC SHORT
change_project_window_action(APTR gl)
{
struct TemplateList *tl = &template_list;
struct NewWindow *nwin = &project_new_window;
struct MsgPort *up = ewin->UserPort;
SHORT left_edge = pwin->LeftEdge, top_edge = pwin->TopEdge, width = pwin->Width, height = pwin->Height, max_width = wb_screen.Width, max_height = wb_screen.Height, MinWidth = pwin->MinWidth, MinHeight = pwin->MinHeight, MaxWidth = pwin->MaxWidth,
MaxHeight = pwin->MaxHeight;
UBYTE dpen = pwin->DetailPen, bpen = pwin->BlockPen;
BYTE title[MAX_PROJECT_NAME_LEN];
USHORT flags = tl->tl_Flags;
ULONG WINflags = pwin->Flags, IDCMPflags = tl->tl_IDCMPFlags;
BOOL keepon = TRUE;
SHORT status = EDITOR_STATUS_NORMAL;
sprintf(title, "%s", tl->tl_ProjectName);
do
{
struct IntuiMessage *msg;
WaitPort(up);
while (msg = IGetMsg(up))
{
ULONG Class = msg->Class;
USHORT Code = msg->Code;
LONG IAddress = (LONG)msg->IAddress;
switch (Class)
{
case CLOSEWINDOW:
status = EDITOR_STATUS_QUIT;
keepon = FALSE;
break;
case ISUP_ID:
switch (Code)
{
case WINDOW_GADGET_TOPEDGE:
if (((SHORT) IAddress + height) > max_height)
{
DisplayBeep(NULL);
ISetGadgetAttributes(gl, WINDOW_GADGET_TOPEDGE, 0L, 0L, USE_CURRENT_VALUE, USE_CURRENT_VALUE, (BYTE *) top_edge);
}
else
{
top_edge = (SHORT) IAddress;
flags |= TEMPLATE_LIST_FLAG_CHANGED;
}
break;
case WINDOW_GADGET_LEFTEDGE:
if (((SHORT) IAddress + width) > max_width)
{
DisplayBeep(NULL);
ISetGadgetAttributes(gl, WINDOW_GADGET_LEFTEDGE, 0L, 0L, USE_CURRENT_VALUE, USE_CURRENT_VALUE, (BYTE *) left_edge);
}
else
{
left_edge = (SHORT) IAddress;
flags |= TEMPLATE_LIST_FLAG_CHANGED;
}
break;
case WINDOW_GADGET_WIDTH:
if (((SHORT) IAddress + left_edge) > max_width)
{
DisplayBeep(NULL);
ISetGadgetAttributes(gl, WINDOW_GADGET_WIDTH, 0L, 0L, USE_CURRENT_VALUE, USE_CURRENT_VALUE, (BYTE *) width);
}
else
{
width = (SHORT) IAddress;
flags |= TEMPLATE_LIST_FLAG_CHANGED;
}
break;
case WINDOW_GADGET_HEIGHT:
if (((SHORT) IAddress + top_edge) > max_height)
{
DisplayBeep(NULL);
ISetGadgetAttributes(gl, WINDOW_GADGET_HEIGHT, 0L, 0L, USE_CURRENT_VALUE, USE_CURRENT_VALUE, (BYTE *) height);
}
else
{
height = (SHORT) IAddress;
flags |= TEMPLATE_LIST_FLAG_CHANGED;
}
break;
case WINDOW_GADGET_DETAILPEN:
dpen = (UBYTE) IAddress;
break;
case WINDOW_GADGET_BLOCKPEN:
printf("WINDOW_GADGET_BLOCKPEN: %ld\n", IAddress);
bpen = (UBYTE) IAddress;
break;
case WINDOW_GADGET_IDCMPFLAGS:
switch ((ULONG) IAddress)
{
case 0:
if (IDCMPflags & GADGETDOWN)
IDCMPflags &= ~GADGETDOWN;
else
IDCMPflags |= GADGETDOWN;
change_flags_list(gl, flags, IDCMPflags, WINflags);
break;
case 1:
if (IDCMPflags & GADGETUP)
IDCMPflags &= ~GADGETUP;
else
IDCMPflags |= GADGETUP;
change_flags_list(gl, flags, IDCMPflags, WINflags);
break;
case 2:
if (IDCMPflags & CLOSEWINDOW)
{
IDCMPflags &= ~CLOSEWINDOW;
WINflags &= ~WINDOWCLOSE;
}
else
{
IDCMPflags |= CLOSEWINDOW;
WINflags |= WINDOWCLOSE;
}
change_flags_list(gl, flags, IDCMPflags, WINflags);
break;
case 3:
if (IDCMPflags & REQSET)
IDCMPflags &= ~REQSET;
else
IDCMPflags |= REQSET;
change_flags_list(gl, flags, IDCMPflags, WINflags);
break;
case 4:
if (IDCMPflags & REQCLEAR)
IDCMPflags &= ~REQCLEAR;
else
IDCMPflags |= REQCLEAR;
change_flags_list(gl, flags, IDCMPflags, WINflags);
break;
case 5:
if (IDCMPflags & REQVERIFY)
IDCMPflags &= ~REQVERIFY;
else
IDCMPflags |= REQVERIFY;
change_flags_list(gl, flags, IDCMPflags, WINflags);
break;
case 6:
if (IDCMPflags & MENUPICK)
IDCMPflags &= ~MENUPICK;
else
IDCMPflags |= MENUPICK;
change_flags_list(gl, flags, IDCMPflags, WINflags);
break;
case 7:
if (IDCMPflags & MENUVERIFY)
IDCMPflags &= ~MENUVERIFY;
else
IDCMPflags |= MENUVERIFY;
change_flags_list(gl, flags, IDCMPflags, WINflags);
break;
case 8:
if (IDCMPflags & MOUSEBUTTONS)
IDCMPflags &= ~MOUSEBUTTONS;
else
IDCMPflags |= MOUSEBUTTONS;
change_flags_list(gl, flags, IDCMPflags, WINflags);
break;
case 9:
if (IDCMPflags & MOUSEMOVE)
IDCMPflags &= ~MOUSEMOVE;
else
IDCMPflags |= MOUSEMOVE;
change_flags_list(gl, flags, IDCMPflags, WINflags);
break;
case 10:
if (IDCMPflags & DELTAMOVE)
IDCMPflags &= ~DELTAMOVE;
else
IDCMPflags |= DELTAMOVE;
change_flags_list(gl, flags, IDCMPflags, WINflags);
break;
case 11:
if (IDCMPflags & NEWSIZE)
IDCMPflags &= ~NEWSIZE;
else
IDCMPflags |= NEWSIZE;
change_flags_list(gl, flags, IDCMPflags, WINflags);
break;
case 12:
if (IDCMPflags & SIZEVERIFY)
IDCMPflags &= ~SIZEVERIFY;
else
IDCMPflags |= SIZEVERIFY;
change_flags_list(gl, flags, IDCMPflags, WINflags);
break;
case 13:
if (IDCMPflags & REFRESHWINDOW)
IDCMPflags &= ~REFRESHWINDOW;
else
IDCMPflags |= REFRESHWINDOW;
change_flags_list(gl, flags, IDCMPflags, WINflags);
break;
case 14:
if (IDCMPflags & ACTIVEWINDOW)
IDCMPflags &= ~ACTIVEWINDOW;
else
IDCMPflags |= ACTIVEWINDOW;
change_flags_list(gl, flags, IDCMPflags, WINflags);
break;
case 15:
if (IDCMPflags & INACTIVEWINDOW)
IDCMPflags &= ~INACTIVEWINDOW;
else
IDCMPflags |= INACTIVEWINDOW;
change_flags_list(gl, flags, IDCMPflags, WINflags);
break;
case 16:
if (IDCMPflags & RAWKEY)
IDCMPflags &= ~RAWKEY;
else
IDCMPflags |= RAWKEY;
change_flags_list(gl, flags, IDCMPflags, WINflags);
break;
case 17:
if (IDCMPflags & VANILLAKEY)
IDCMPflags &= ~VANILLAKEY;
else
IDCMPflags |= VANILLAKEY;
change_flags_list(gl, flags, IDCMPflags, WINflags);
break;
case 18:
if (IDCMPflags & DISKINSERTED)
IDCMPflags &= ~DISKINSERTED;
else
IDCMPflags |= DISKINSERTED;
change_flags_list(gl, flags, IDCMPflags, WINflags);
break;
case 19:
if (IDCMPflags & DISKREMOVED)
IDCMPflags &= ~DISKREMOVED;
else
IDCMPflags |= DISKREMOVED;
change_flags_list(gl, flags, IDCMPflags, WINflags);
break;
case 20:
if (IDCMPflags & NEWPREFS)
IDCMPflags &= ~NEWPREFS;
else
IDCMPflags |= NEWPREFS;
change_flags_list(gl, flags, IDCMPflags, WINflags);
break;
case 21:
if (IDCMPflags & INTUITICKS)
IDCMPflags &= ~INTUITICKS;
else
IDCMPflags |= INTUITICKS;
change_flags_list(gl, flags, IDCMPflags, WINflags);
break;
case 22:
if (IDCMPflags & WBENCHMESSAGE)
IDCMPflags &= ~WBENCHMESSAGE;
else
IDCMPflags |= WBENCHMESSAGE;
change_flags_list(gl, flags, IDCMPflags, WINflags);
break;
case 23:
if ((IDCMPflags & GADGET_IDCMP_FLAGS_ALL) == GADGET_IDCMP_FLAGS_ALL)
IDCMPflags &= ~GADGET_IDCMP_FLAGS_ALL;
else
IDCMPflags |= GADGET_IDCMP_FLAGS_ALL;
change_flags_list(gl, flags, IDCMPflags, WINflags);
break;
}
IRefreshGadgets(gl);
break;
case WINDOW_GADGET_FLAGS:
switch ((ULONG) IAddress)
{
case 0:
if (WINflags & WINDOWCLOSE)
{
WINflags &= ~WINDOWCLOSE;
IDCMPflags &= ~CLOSEWINDOW;
}
else
{
WINflags |= WINDOWCLOSE;
IDCMPflags |= CLOSEWINDOW;
}
change_flags_list(gl, flags, IDCMPflags, WINflags);
break;
case 1:
if (WINflags & WINDOWDRAG)
WINflags &= ~WINDOWDRAG;
else
WINflags |= WINDOWDRAG;
change_flags_list(gl, flags, IDCMPflags, WINflags);
break;
case 2:
if (WINflags & WINDOWDEPTH)
WINflags &= ~WINDOWDEPTH;
else
WINflags |= WINDOWDEPTH;
change_flags_list(gl, flags, IDCMPflags, WINflags);
break;
case 3:
if (WINflags & WINDOWSIZING)
{
WINflags &= ~WINDOWSIZING;
MinWidth = 0;
MinHeight = 0;
MaxWidth = 0;
MaxHeight = 0;
}
else
WINflags |= WINDOWSIZING;
change_flags_list(gl, flags, IDCMPflags, WINflags);
break;
case 4:
if (WINflags & BACKDROP)
WINflags &= ~BACKDROP;
else
WINflags |= BACKDROP;
change_flags_list(gl, flags, IDCMPflags, WINflags);
break;
case 5:
if (WINflags & BORDERLESS)
WINflags &= ~BORDERLESS;
else
WINflags |= BORDERLESS;
change_flags_list(gl, flags, IDCMPflags, WINflags);
break;
case 6:
if (WINflags & GIMMEZEROZERO)
WINflags &= ~GIMMEZEROZERO;
else
WINflags |= GIMMEZEROZERO;
change_flags_list(gl, flags, IDCMPflags, WINflags);
break;
case 7:
if (WINflags & SUPER_BITMAP)
WINflags &= ~SUPER_BITMAP;
else
WINflags |= SUPER_BITMAP;
change_flags_list(gl, flags, IDCMPflags, WINflags);
break;
case 8:
if (WINflags & SIMPLE_REFRESH)
WINflags &= ~SIMPLE_REFRESH;
else
WINflags |= SIMPLE_REFRESH;
change_flags_list(gl, flags, IDCMPflags, WINflags);
break;
case 9:
/*
if(WINflags & SMART_REFRESH)
WINflags &= ~SMART_REFRESH;
else
WINflags |= SMART_REFRESH;
change_flags_list(gl,flags,IDCMPflags,WINflags);
*/
break;
case 10:
if (flags & TEMPLATE_LIST_FLAG_REPORTMOUSE)
flags &= ~TEMPLATE_LIST_FLAG_REPORTMOUSE;
else
flags |= TEMPLATE_LIST_FLAG_REPORTMOUSE;
change_flags_list(gl, flags, IDCMPflags, WINflags);
break;
case 11:
if (WINflags & NOCAREREFRESH)
WINflags &= ~NOCAREREFRESH;
else
WINflags |= NOCAREREFRESH;
change_flags_list(gl, flags, IDCMPflags, WINflags);
break;
case 12:
if (WINflags & RMBTRAP)
WINflags &= ~RMBTRAP;
else
WINflags |= RMBTRAP;
change_flags_list(gl, flags, IDCMPflags, WINflags);
break;
case 13:
if (WINflags & ACTIVATE)
WINflags &= ~ACTIVATE;
else
WINflags |= ACTIVATE;
change_flags_list(gl, flags, IDCMPflags, WINflags);
break;
case 14:
if (flags & TEMPLATE_LIST_FLAG_BACK_FILL)
flags &= ~TEMPLATE_LIST_FLAG_BACK_FILL;
else
flags |= TEMPLATE_LIST_FLAG_BACK_FILL;
change_flags_list(gl, flags, IDCMPflags, WINflags);
break;
case 15:
if (flags & TEMPLATE_LIST_FLAG_RENDER_COLORS)
flags &= ~TEMPLATE_LIST_FLAG_RENDER_COLORS;
else
{
flags |= TEMPLATE_LIST_FLAG_RENDER_COLORS;
dpen = 0;
bpen = 1;
}
change_flags_list(gl, flags, IDCMPflags, WINflags);
break;
case 16:
if (flags & TEMPLATE_LIST_FLAG_AVAIL_FONTS)
flags &= ~TEMPLATE_LIST_FLAG_AVAIL_FONTS;
else
flags |= TEMPLATE_LIST_FLAG_AVAIL_FONTS;
change_flags_list(gl, flags, IDCMPflags, WINflags);
break;
}
IRefreshGadgets(gl);
break;
case WINDOW_GADGET_TITLE:
sprintf(title, "%s", IAddress);
break;
case WINDOW_GADGET_MINWIDTH:
if ((SHORT) IAddress < 0)
MinWidth = 1;
else
MinWidth = (SHORT) IAddress;
break;
case WINDOW_GADGET_MINHEIGHT:
if ((SHORT) IAddress < 0)
MinHeight = 1;
else
MinHeight = (SHORT) IAddress;
break;
case WINDOW_GADGET_MAXWIDTH:
if ((SHORT) IAddress < 0)
MaxWidth = 65535;
else
MaxWidth = (SHORT) IAddress;
break;
case WINDOW_GADGET_MAXHEIGHT:
if ((SHORT) IAddress < 0)
MaxHeight = 65535;
else
MaxHeight = (SHORT) IAddress;
break;
case WINDOW_GADGET_OK:
/* Change project window */
nwin->LeftEdge = left_edge;
nwin->TopEdge = top_edge;
nwin->Width = width;
nwin->Height = height;
nwin->Flags = WINflags;
nwin->DetailPen = dpen;
nwin->BlockPen = bpen;
nwin->MinWidth = MinWidth;
nwin->MinHeight = MinHeight;
nwin->MaxWidth = MaxWidth;
nwin->MaxHeight = MaxHeight;
strcpy(tl->tl_ProjectWinName, title);
tl->tl_IDCMPFlags = IDCMPflags;
tl->tl_Flags = flags;
if ((status = new_project_window(tl, flags)) == EDITOR_STATUS_NORMAL)
refresh_all_templates();
keepon = FALSE;
break;
case WINDOW_GADGET_CANCEL:
keepon = FALSE;
break;
}
}
IReplyMsg(msg);
}
}
while (keepon == TRUE);
return status;
}